Content management systems are used to organize, manipulate, and archive collections of content for organizations. In some cases, a content management system is developed in part by a customer. A content management system vendor provides general or underlying platforms, services, and/or objects referred to as a base product. The customer, or a developer hired by the customer, defines and develops products (e.g., custom applications, custom data structures, etc.) that run on or otherwise interact with the base product provided by a content management system vendor. The product(s) developed by a customer and the base product collectively form a content management system.
In some content management systems, a content item is represented within a body of managed content by one or more persistent software objects, sometimes referred to herein as “implementation objects”. The implementation objects include metadata about and/or other attribute data associated with the content item, and in some cases its relationship to other content, and/or properties or methods available to be performed with respect to the content item, such as check-in, check-out, save, versioning, etc. However, the need may arise to modify the set of behaviors or attributes associated with an implementation object, such as by adding new attributes and/or behaviors and/or modifying existing attributes and/or behaviors. In some content management systems, the behaviors and attributes of an implementation object could only be changed by replacing the original implementation object with a new object that includes the modified attributes and/or behaviors. However, replacing the implementation object with a new object in a typical system would require a mechanism to inform any applications and/or other users using the original implementation object of the change, and could result in a loss of access to the content or other error if the application were not configured to understand and respond properly to such a notification. It would be convenient therefore to have content management systems that support modification of a set of attributes in seamless or otherwise transparent manner (for example) without requiring the creation of new functionality to report and/or detect when attributes, methods, or properties have changed, or requiring a user or process using an implementation object to “re-fetch” every time the implementation object is updated.